// import com.alibaba.druid.sql.ast.SQLExpr;
// import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObjectImpl;
// import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor;
#pragma once
#include "../OracleSQLObjectImpl.h"

class OracleStorageClause_FlashCacheType
{
public:
  static OracleStorageClause_FlashCacheType_ptr KEEP;
  static OracleStorageClause_FlashCacheType_ptr NONE;
  static OracleStorageClause_FlashCacheType_ptr DEFAULT;

  string_ptr name;
  uint64_t mask;
  OracleStorageClause_FlashCacheType(uint64_t mask, string_ptr name);
};
class OracleStorageClause : virtual public OracleSQLObjectImpl
{
public:
  SQLExpr_ptr initial;
  SQLExpr_ptr next;
  SQLExpr_ptr minExtents;
  SQLExpr_ptr maxExtents;
  SQLExpr_ptr maxSize;
  SQLExpr_ptr pctIncrease;
  SQLExpr_ptr freeLists;
  SQLExpr_ptr freeListGroups;
  SQLExpr_ptr bufferPool;
  SQLExpr_ptr objno;
  OracleStorageClause_FlashCacheType_ptr flashCache;
  OracleStorageClause_FlashCacheType_ptr cellFlashCache;

  SHAREDOBJECT(OracleStorageClause);
  SQLObject_ptr clone();

  // @Override
  void accept0(OracleASTVisitor_ptr visitor);

  SQLExpr_ptr getMaxSize();

  void setMaxSize(SQLExpr_ptr maxSize);

  OracleStorageClause_FlashCacheType_ptr getFlashCache();

  void setFlashCache(OracleStorageClause_FlashCacheType_ptr flashCache);

  OracleStorageClause_FlashCacheType_ptr getCellFlashCache();

  void setCellFlashCache(OracleStorageClause_FlashCacheType_ptr cellFlashCache);

  SQLExpr_ptr getPctIncrease();

  void setPctIncrease(SQLExpr_ptr pctIncrease);

  SQLExpr_ptr getNext();

  void setNext(SQLExpr_ptr next);

  SQLExpr_ptr getMinExtents();

  void setMinExtents(SQLExpr_ptr minExtents);

  SQLExpr_ptr getMaxExtents();

  void setMaxExtents(SQLExpr_ptr maxExtents);

  SQLExpr_ptr getObjno();

  void setObjno(SQLExpr_ptr objno);

  SQLExpr_ptr getInitial();

  void setInitial(SQLExpr_ptr initial);

  SQLExpr_ptr getFreeLists();

  void setFreeLists(SQLExpr_ptr freeLists);

  SQLExpr_ptr getFreeListGroups();

  void setFreeListGroups(SQLExpr_ptr freeListGroups);

  SQLExpr_ptr getBufferPool();

  void setBufferPool(SQLExpr_ptr bufferPool);
};
